# efCore CodeSnippet

#### 介绍
记录一下代码片段

#### 模型属性
```
#排除类型&属性
[NotMapped]

#主键
[Key]

#必选属性
[Required]

#最大长度
[MaxLength(500)]

#乐观锁时间戳
[Timestamp]
public byte[] Timestamp { get; set; }

#值转换（枚举转字符串）
[Column(TypeName = "nvarchar(24)")]
public enum Type{ get; set; }


```


#### Fluent API

```
#索引（非唯一）
modelBuilder.Entity<Blog>()
            .HasIndex(b => b.Url);

#索引（唯一）
modelBuilder.Entity<Blog>()
            .HasIndex(b => b.Url)
            .IsUnique();

#索引（联合）
modelBuilder.Entity<Blog>()
             .HasIndex(p => new { p.FirstName, p.LastName });

#备用键
modelBuilder.Entity<Blog>()
             .HasAlternateKey(p => new { p.FirstName, p.LastName });



#默认值
modelBuilder.Entity<Blog>()
            .Property(b => b.Created)
            .HasDefaultValueSql("getdate()");
#查询筛选
modelBuilder.Entity<Post>().HasQueryFilter(p => !p.IsDeleted);

#值转换
var converter = new EnumToStringConverter<EquineBeast>();
modelBuilder
    .Entity<Rider>()
    .Property(e => e.Mount)
    .HasConversion(converter);

```



#### 命令

```
#迁移
dotnet ef migrations add goodsv8 -c DbCore.xxxx.xxxContext

#更新
dotnet ef database update -c DbCore.xxxx.xxxContext

```